Software-defined networking (SDN) is an emerging network technology that may improve customization, optimization, and improvement of networks. SDN may simplify networks by decoupling data-forwarding functionality (sometimes referred as a data plane) from a routing, resource, and other management functionality (sometimes referred as a control plane). As a result, while traditional network nodes may provide both the data plane functionality and the control plane functionality, a SDN node (e.g., a switch) may provide the data plane functionality and a centralized SDN controller may provide the control plane functionality. Network traffic may be controlled by devices in a programmable central control plane, which may be configured remotely. Thus, greater flexibility may be achieved in controlling and configuring network traffic.
In existing SDN based networks, the settings of various network services (e.g., higher layer services) are manually configured at both the service provider and edge switches of a network path. When an incoming packet is received by the network, an edge switch routes the packet to an external service provider device, which applies L4 service rules to the packet. If the packet passes the service rules, the edge switch may then send the packet to internal switches of the network for forwarding to various target virtual machines (VMs). If the packet fails the service rules, the packet is dropped.
The current mechanism for handling services poses certain issues. For example, manual configuration of edge switches is necessary. Thus, every time service configurations are changed, all edge switches are reconfigured manually. Furthermore, all incoming packets are forwarded to the service device. However, when a packet in a traffic flow passes the service rules, all packets in the same traffic flow will generally also pass. Therefore, by forwarding every packet to the service device, unnecessary latency is created, and an unnecessary number of network resources are expended.